home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1986-02-21 | 4.5 KB | 145 lines |
- 1000 ' MAXIT FROM PET
- 1010 ' ADAPTED TO IPM PC BY PATRICK LEABO
- 1020 ' 3-20-82 TUCSON ARIZONA
- 1030 '
- 1090 SCREEN 0:COLOR 7,0:WIDTH 80:KEY OFF
- 1100 DEFINT A-Z:DATA 49,51,53,54,56,58,60,61
- 1110 RANDOMIZE VAL(RIGHT$(TIME$,2))
- 1120 FOR N= 0 TO 7:READ NT(N):NEXT
- 1140 DIM BD(7,7),AV(64)
- 1150 CLS:LOCATE 3,11:PRINT "THE GAME OF MAXIT"
- 1160 PRINT "DO YOU WANT INSTRUCTIONS ? ";:GOSUB 3000:PRINT
- 1170 IF KS$= "Y" OR KS$="y" THEN GOSUB 2210
- 1180 PRINT :PRINT "1 OR 2 PLAYERS ?";:GOSUB 3000
- 1190 PRINT KS$:NP= VAL (KS$):PRINT
- 1200 IF NP= 1 THEN 1240
- 1210 IF NP< > 2 THEN 1180
- 1220 INPUT "WHAT IS YOUR NAME #1";P1$:P1$=LEFT$(P1$,7):BEEP:PRINT
- 1230 PRINT :INPUT "WHAT IS YOUR NAME #2";P2$:P2$=LEFT$(P2$,7):BEEP:PRINT :GOTO 1250
- 1240 P2$= "IBM PC":INPUT "WHAT IS YOUR NAME ";P1$:BEEP:PRINT:P1$=LEFT$(P1$,7)
- 1250 CLS:LOCATE 2,16:PRINT "M A X I T":GOSUB 2360
- 1260 RANDOMIZE VAL(RIGHT$(TIME$,2)):MD= 1
- 1270 FOR K= 1 TO 64:AV(K)= K:NEXT
- 1280 FOR K= 64 TO 1 STEP - 1:READ PC
- 1290 P1= 1+ INT (K* RND (1))
- 1300 J= AV(P1)- 1
- 1310 IF P1< K THEN FOR I= P1 TO K- 1:AV(I)= AV(I+ 1):NEXT
- 1320 I= INT (J/ 8):J= J- 8* I
- 1330 BD(I,J)= PC:GOSUB 1540:NT= J:GOSUB 1980
- 1340 NEXT K:RESTORE 1350:NT= 7:GOSUB 1980:GOSUB 1980:GOSUB 1980
- 1350 DATA 15,10,9,9,8,8,7,7,7,6,6,6
- 1360 DATA 5,5,5,5,4,4,4,4,3,3,3,3,3
- 1370 DATA 2,2,2,2,2,2,1,1,1,1,1
- 1380 DATA 0,0,0,0,0,0,-1,-1,-1,-1,-1
- 1390 DATA -2,-2,-2,-2,-3,-3,-3
- 1400 DATA -4,-4,-4,-5,-5,-6,-6
- 1410 DATA -7,-9,100
- 1420 S1= 0:S2= 0:GOSUB 2000
- 1430 REM PLAYER 1
- 1440 PL= 1:GOSUB 1630:IF FL= 0 THEN 1470
- 1450 REM PLAYER 2
- 1460 PL= 2:GOSUB 1630:IF FL< > 0 THEN 1430
- 1470 LOCATE 22,1:PRINT STRING$(39," ");:LOCATE 22,1:ON 2+ SGN (S2- S1)GOSUB 1510,1520,1530
- 1480 POKE 106,0:LOCATE 23,1:PRINT STRING$(39," ");:LOCATE 23,1:PRINT "DO YOU WANT TO PLAY AGAIN ?";:C$="":WHILE C$="":C$=INKEY$:WEND:PRINT C$
- 1490 IF "Y"= C$ OR "y"=C$ THEN 1250
- 1500 CHAIN "MENU",1000
- 1510 PRINT P1$;" WON BY ";STR$ (S1- S2);" POINTS":PRINT :RETURN
- 1520 PRINT "IT'S A TIE !! ":RETURN
- 1530 PRINT P2$;" WON BY ";STR$ (S2- S1);" POINTS ":PRINT :RETURN
- 1540 REM DRAW BOARD POSITION I,J IN MODE MD (1=RED,2=BLACK)
- 1550 PC= BD(I,J)
- 1560 LOCATE I* 2+ 5,J*4+5
- 1570 IF MD= 2 THEN COLOR 0,7:GOTO 1590
- 1580 COLOR 7,0
- 1590 IF PC= 100 THEN PRINT "**":C1= I:C2= J:GOTO 1620
- 1600 IF PC= - 100 THEN PRINT " ":GOTO 1620
- 1610 PRINT RIGHT$ (" "+ STR$ (PC),2)
- 1620 COLOR 7,0:RETURN
- 1630 IF PL= 2 THEN 1670
- 1640 FL= 600:FOR J= 0 TO 7:FL= FL+ BD(C1,J):NEXT
- 1650 IF FL= 0 THEN RETURN
- 1660 NM$= P1$:DX= 1:DY= 0:GOSUB 1700:RETURN
- 1670 FL= 600:FOR I= 0 TO 7:FL= FL+ BD(I,C2):NEXT
- 1680 IF FL= 0 THEN RETURN
- 1690 NM$= P2$:DX= 0:DY= 1:GOSUB 1700:RETURN
- 1700 Y= C1:X= C2:FX= 1
- 1705 IF PL = 2 THEN COLOR 0,7
- 1710 IF NP= 2 OR PL= 1 THEN 1730
- 1720 PRINT :GOSUB 1970:PRINT NM$;"'S TURN. ":GOSUB 2060:GOTO 1880
- 1730 GOSUB 1970:ON FX GOTO 1740,1750
- 1740 PRINT :GOSUB 1970:PRINT NM$;", YOUR TURN. ":PRINT :GOTO 1760
- 1750 PRINT " ":PRINT
- 1760 PLAY "L64T200N70"
- 1770 C$=INKEY$:IF C$="" THEN 1770 ELSE KS=ASC(C$)
- 1775 IF C$=CHR$(27) THEN 1500
- 1780 IF C$< > " "THEN 1860
- 1790 OX= X:OY= Y
- 1800 Y= Y+ DY:IF Y> 7 THEN Y= 0
- 1810 X= X+ DX:IF X> 7 THEN X= 0
- 1820 PT= BD(Y,X):IF ABS (PT)= 100 THEN 1800
- 1830 MD= 1:I= OY:J= OX:GOSUB 1540
- 1840 MD= 2:I= Y:J= X:GOSUB 1540
- 1850 GOTO 1770
- 1860 IF C$< > CHR$ (13)THEN 1770
- 1870 IF ABS (BD(Y,X))= 100 THEN 1770
- 1880 REM SCORE IT
- 1890 '
- 1900 IF NP=1 AND PL =2 THEN MD= 2:I= Y :J= X:GOSUB 1540:FOR DL = 1 TO 1500:NEXT
- 1905 GOSUB 1990:MD= 1:I= C1:J= C2:BD(I,J)= - 100:GOSUB 1540
- 1910 I= Y:J= X:PT= BD(I,J):BD(I,J)= 100:GOSUB 1540
- 1920 IF PL= 1 THEN S1= S1+ PT
- 1930 IF PL= 2 THEN S2= S2+ PT
- 1940 GOSUB 1970
- 1950 LOCATE 22,25:PRINT "LAST TAKEN:";PT;" ";
- 1960 GOSUB 2000:RETURN
- 1970 LOCATE 22,1:RETURN
- 1980 PLAY "MNMFL64N=NT(NT);":RETURN
- 1990 FOR N=49 TO 70 :PLAY "MBT255MLO3L64N=N;":NEXT:RETURN
- 2000 GOSUB 1970
- 2010 LOCATE 21,1:ME$=P1$+"'S SCORE="+STR$ (S1)+" "+P2$+"'S SCORE="+STR$ (S2)+" ":ME$=LEFT$(ME$,40):PRINT ME$:RETURN
- 2020 REM SCREEN INSTRUCTIONS
- 2050 RETURN
- 2059 ' COMPUTER PLAYER ALGORITHM
- 2060 MT= - 100:GG= - 1:FOR A1= 0 TO 7:PC= BD(A1,C2):IF ABS (PC)= 100 THEN 2200
- 2070 MX= - 100:FOR A2= 0 TO 7
- 2080 IF A2< > C2 THEN PK= BD(A1,A2):IF PK< > - 100 AND PK> MX THEN MX= PK:SV= A
- 2090 NEXT A2
- 2100 IF MX< > - 100 THEN 2120
- 2110 IF PC> MT THEN MT= PC:GG= A1:GOTO 2200
- 2120 IF GG< 0 THEN GG= A1
- 2130 FOR A2= 0 TO 7:PQ= BD(A2,SV):IF PQ= - 100 OR A2= A1 THEN 2190
- 2140 MY= - 100:FOR A3= 0 TO 7:PW= BD(A2,A3):IF A3= SV THEN 2160
- 2150 IF ABS (PW)< > 100 AND PW> MY THEN MY= PW
- 2160 NEXT A3
- 2170 IF MY= - 100 THEN MY= 0
- 2180 DT= PC- MX+ PQ- MY:IF DT> MT THEN MT= DT:GG= A1
- 2190 NEXT A2
- 2200 NEXT A1:Y= GG:RETURN
- 2210 LOCATE 1,16:PRINT "M A X I T":PRINT
- 2220 PRINT "THE OBJECT OF MAXIT IS TO GET AS MANY"
- 2230 PRINT "POINTS AS POSSIBLE. TWO PLAYERS CAN"
- 2240 PRINT "PLAY AGAINST EACH OTHER, OR ONE AGAINST"
- 2250 PRINT "THE COMPUTER.":PRINT :PRINT
- 2260 PRINT "YOU GET POINTS BY MOVING A MARKER "
- 2270 PRINT " **"
- 2280 PRINT "TO A SPACE WITH A NUMBER IN IT. THE"
- 2290 PRINT "FIRST PLAYER ALWAYS MOVES HORIZONTALLY"
- 2300 PRINT "AND THE SECOND MOVES VERTICALLY. YOU"
- 2310 PRINT "INDICATE THE PLACE YOU WANT TO MOVE TO"
- 2320 PRINT "BY USING THE SPACE BAR TO POSITION"
- 2330 PRINT "YOURSELF, AND THEN PUSH RETURN TO TAKE"
- 2340 PRINT "THAT PIECE.":RETURN
- 2350 PLOT 8:END
- 2360 REM OTHER OTHELLO BOARD
- 2370 '
- 2380 TOP$="ERRTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENOPTION"
- 2382 MD1$="CALL CALL CALL CALL CALL CALL CALL CALL CALL"
- 2384 MD2$="PSETTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHEN<0xB5!>"
- 2386 BOT$="ERLTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSAVE"
- 2390 LOCATE 4,4:PRINT TOP$
- 2400 FOR Y=5 TO 17 STEP 2:LOCATE Y,4:PRINT MD1$:LOCATE Y+1,4:PRINT MD2$:NEXT
- 2410 LOCATE 19,4:PRINT MD1$:LOCATE 20,4:PRINT BOT$
- 2440 GOSUB 2020
- 2450 RETURN
- 3000 KS$="":WHILE KS$="":KS$=INKEY$:WEND:KS=ASC(KS$):RETURN
-